import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    //提供唯一公共数据源
    count:0
  },
  mutations: {
    //变更store中的数据
    add(state) { 
      //变更状态
      state.count++
    },
    addN(state, step) { 
      state.count +=step
    },
    sub(state) { 
      state.count--
    },
    subN(state, step) { 
      state.count -= step
    }
  },
  actions: {
    //处理异步任务
    //在action中不能直接修改state的数据，必需要通过contex.commit()调用触发某个mutations
    addAsync(context) {
      setTimeout(() => {
        context.commit('add')
      }, 1000);
    },
    addnAsync(context, step) { 
      setTimeout(() => { 
        context.commit('addN',step)
      },1000)
    },
    subAsync(context) {
      setTimeout(() => {
        context.commit('sub')
      }, 1000);
    },
    subnAsync(context,step) {
      setTimeout(() => {
        context.commit('subN',step)
      }, 1000);
    },
  },
  getters: {
    showNum(state) {
      return  '当前最新的数量为【'+state.count+'】'
    }
  },
  modules: {
  }
})
